Functions এবং Error Handling

Mobile App Development - ফ্লাটার (Flutter) - Dart প্রোগ্রামিং ভাষার বেসিক
315
Summary

Dart-এর ফাংশন এবং এরর হ্যান্ডলিং

Dart-এর ফাংশন এবং এরর হ্যান্ডলিং কোডকে আরও সংগঠিত ও কার্যকর করে। নিচে মূল পয়েন্টগুলি তুলে ধরা হলো:

  • ফাংশন: Dart-এ ফাংশন হলো একটি কোডের ব্লক যা নির্দিষ্ট কাজ সম্পাদন করে।
  • ফাংশন ডিক্লেয়ার: সাধারণ ফর্ম্যাট হল:

    return_type function_name(parameters) { // function body }

    উদাহরণ: int add(int a, int b) { return a + b; }

  • Arrow Function: সংক্ষিপ্ত ফাংশন লেখার জন্য => অপারেটর ব্যবহার করা হয়।
  • Optional ও Named Parameters: ফাংশনের প্যারামিটারগুলি ঐচ্ছিক বা নামকৃত করা যায়।
  • Anonymous Functions: ফাংশনগুলো ভেরিয়েবলে সংরক্ষণ করা যায়।

এরর হ্যান্ডলিং:

  • Dart-এ এরর হ্যান্ডলিংয়ের জন্য try, catch, on, এবং finally ব্লক ব্যবহার হয়।
  • try-catch: এরর ধরা পড়লে catch ব্লকে সমাধান দেওয়া হয়।
  • on-catch: নির্দিষ্ট এরর টাইপের জন্য আলাদা হ্যান্ডলিং।
  • finally: সবসময় চলবে, থাকা কিংবা না থাকা নির্বিশেষে।
  • Custom Exceptions: Exception ক্লাস থেকে ইনহেরিট করে কাস্টম এক্সেপশন তৈরি করা যায়।
  • Rethrow: এরর ধরা এবং পুনরায় ছুঁড়ে ফেলা।

Dart-এর এরর হ্যান্ডলিং কোড ক্র্যাশের বিরুদ্ধে প্রোটেকশন দেয় এবং কাস্টম এক্সেপশন ব্যবহারের মাধ্যমে ত্রুটির সুনির্দিষ্ট হ্যান্ডলিং সম্ভব করে।

Dart-এর ফাংশন এবং এরর হ্যান্ডলিং ব্যবহার করে কোড আরও সংগঠিত, কার্যকর এবং ত্রুটিমুক্ত করা যায়।

Dart-এ ফাংশন এবং এরর হ্যান্ডলিং নিয়ে বিস্তারিতভাবে আলোচনা নিচে দেওয়া হলো:


Functions (ফাংশন)

Dart প্রোগ্রামিং ভাষায় ফাংশন হলো কোডের একটি ব্লক, যা একটি নির্দিষ্ট কাজ সম্পাদন করতে ব্যবহৃত হয়। Dart-এ ফাংশনগুলো ক্লাসের বাইরে বা ভিতরে ডিফাইন করা যেতে পারে। নিচে Dart-এর ফাংশন সম্পর্কিত ধারণা এবং উদাহরণগুলো দেওয়া হলো:

ফাংশন ডিক্লেয়ার করা

Dart এ ফাংশন ডিক্লেয়ার করা হয় return_type এবং function_name ব্যবহার করে:

return_type function_name(parameters) {
  // function body
}

উদাহরণ ১: একটি সাধারণ ফাংশন

int add(int a, int b) {
  return a + b;
}

void main() {
  int sum = add(10, 5);
  print(sum); // Output: 15
}

উদাহরণ ২: void ফাংশন

void greet(String name) {
  print('Hello, $name!');
}

void main() {
  greet('Alice'); // Output: Hello, Alice!
}

Arrow Function (ল্যাম্বডা বা অ্যারো ফাংশন)

Dart এ => অপারেটর ব্যবহার করে একটি সংক্ষিপ্ত ফাংশন লেখা যায়:

int multiply(int a, int b) => a * b;

void main() {
  print(multiply(4, 5)); // Output: 20
}

Optional এবং Named Parameters

Optional Parameters: ফাংশনের প্যারামিটারগুলো ব্র্যাকেট [] এর ভিতরে রাখলে তা ঐচ্ছিক হিসেবে বিবেচিত হয়:

void printDetails(String name, [int? age]) {
  if (age != null) {
    print('$name is $age years old.');
  } else {
    print('$name\'s age is unknown.');
  }
}

void main() {
  printDetails('Alice'); // Output: Alice's age is unknown.
  printDetails('Bob', 30); // Output: Bob is 30 years old.
}

Named Parameters: Dart-এ required কীওয়ার্ড ব্যবহার করে ফাংশনের প্যারামিটারগুলোকে নির্দিষ্ট করা যায় এবং ডিফল্ট ভ্যালু সেট করা যায়:

void describe({required String name, int age = 18}) {
  print('$name is $age years old.');
}

void main() {
  describe(name: 'Charlie'); // Output: Charlie is 18 years old.
  describe(name: 'David', age: 25); // Output: David is 25 years old.
}

Anonymous Functions (গোপন বা অজানা ফাংশন)

Dart এ ফাংশনগুলোকে ভেরিয়েবলে সংরক্ষণ করা যায় এবং প্যারামিটার ছাড়া সেগুলোকে ডিফাইন করা যায়:

void main() {
  var printMessage = (String message) {
    print(message);
  };

  printMessage('Hello, Dart!'); // Output: Hello, Dart!
}

Error Handling (এরর হ্যান্ডলিং)

Dart-এ এরর হ্যান্ডলিংয়ের জন্য try, catch, on, এবং finally ব্লক ব্যবহার করা হয়। এগুলো ব্যবহার করে প্রোগ্রামে কোনো ত্রুটি বা এরর ধরা পড়লে তা পরিচালনা করা যায়।

try-catch ব্লক

try ব্লকের ভেতরে থাকা কোডে কোনো এরর থাকলে catch ব্লকে ধরা পড়বে এবং সেখানে তার সমাধান বা নোটিফিকেশন প্রদর্শন করা যাবে।

void main() {
  try {
    int result = 10 ~/ 0; // Division by zero error
    print(result);
  } catch (e) {
    print('Error: $e'); // Output: Error: IntegerDivisionByZeroException
  }
}

on-catch ব্লক

on কীওয়ার্ড ব্যবহার করে নির্দিষ্ট এরর টাইপের জন্য আলাদা হ্যান্ডলিং করা যায়:

void main() {
  try {
    int result = 10 ~/ 0;
    print(result);
  } on IntegerDivisionByZeroException {
    print('Cannot divide by zero!');
  } catch (e) {
    print('Error: $e');
  }
}

finally ব্লক

finally ব্লক সবসময় চলবে, চাইলেও সেটা হোক try সফল হলেও বা catch ব্লকে এরর ধরা পড়লেও:

void main() {
  try {
    int result = 10 ~/ 0;
    print(result);
  } catch (e) {
    print('Error: $e');
  } finally {
    print('This block always executes.');
  }
}

Custom Exceptions (কাস্টম এক্সেপশন)

Dart এ কাস্টম এক্সেপশন তৈরি করা যায়। এজন্য একটি ক্লাস তৈরি করতে হবে যা Exception ক্লাস থেকে ইনহেরিট করবে:

class AgeException implements Exception {
  String errorMessage() => 'Age cannot be negative!';
}

void checkAge(int age) {
  if (age < 0) {
    throw AgeException();
  } else {
    print('Valid age: $age');
  }
}

void main() {
  try {
    checkAge(-5);
  } catch (e) {
    print(e.errorMessage()); // Output: Age cannot be negative!
  }
}

এরর রিইথ্রো করা

কখনো কখনো আমরা একটি এরর ধরতে চাই এবং তারপর সেটি পুনরায় ছুঁড়তে চাই, এর জন্য rethrow ব্যবহার করা হয়:

void divideNumbers(int a, int b) {
  try {
    print(a ~/ b);
  } catch (e) {
    print('Error: $e');
    rethrow; // Re-throwing the exception
  }
}

void main() {
  try {
    divideNumbers(10, 0);
  } catch (e) {
    print('Handled again in main: $e');
  }
}

Dart এরর হ্যান্ডলিংয়ের গুরুত্বপূর্ণ দিক

  • Dart এ try-catch ব্যবহার করে এরর হ্যান্ডেল করলে কোড ক্র্যাশ থেকে রক্ষা করা যায়।
  • finally ব্লক ব্যবহার করে আপনি শেষমেশ ক্লিনআপ বা রিসোর্স মুক্ত করার কাজ করতে পারেন।
  • কাস্টম এক্সেপশন ব্যবহার করে আপনি আপনার কোডে আরও স্পেসিফিক এরর হ্যান্ডলিং যোগ করতে পারেন, যা বাগ খুঁজে পেতে সহায়ক।
Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...